# -*- mode: python; -*-

Import("env")
Import("get_option")
Import("has_option")
Import("wiredtiger")

env = env.Clone()

env.Program(
    target="dbtest",
    source=[
        "basictests.cpp",
        "catalogtests.cpp",
        "clienttests.cpp",
        "commandtests.cpp",
        "counttests.cpp",
        "dbhelper_tests.cpp",
        "dbtests.cpp",
        "deferred_writer.cpp",
        "directclienttests.cpp",
        "documentsourcetests.cpp",
        "extensions_callback_real_test.cpp",
        "index_access_method_test.cpp",
        "indexcatalogtests.cpp",
        "indexupdatetests.cpp",
        "insert_test.cpp",
        "jsobjtests.cpp",
        "jsontests.cpp",
        "jstests.cpp" if get_option("js-engine") != "none" else [],
        "logical_sessions_tests.cpp",
        "matchertests.cpp" if get_option("js-engine") != "none" else [],
        "mock_dbclient_conn_test.cpp",
        "mock_replica_set_test.cpp",
        "multikey_paths_test.cpp",
        "pdfiletests.cpp",
        "plan_executor_invalidation_test.cpp",
        "plan_ranking.cpp",
        "query_plan_executor.cpp",
        "query_stage_and.cpp",
        "query_stage_batched_delete.cpp",
        "query_stage_cached_plan.cpp",
        "query_stage_collscan.cpp",
        "query_stage_count.cpp",
        "query_stage_count_scan.cpp",
        "query_stage_delete.cpp",
        "query_stage_distinct.cpp",
        "query_stage_fetch.cpp",
        "query_stage_ixscan.cpp",
        "query_stage_limit_skip.cpp",
        "query_stage_merge_sort.cpp",
        "query_stage_multiplan.cpp",
        "query_stage_near.cpp",
        "query_stage_sort.cpp",
        "query_stage_sort_key_generator.cpp",
        "query_stage_subplan.cpp",
        "query_stage_tests.cpp",
        "query_stage_trial.cpp",
        "query_stage_update.cpp",
        "querytests.cpp",
        "replica_set_tests.cpp",
        "repltests.cpp",
        "rollbacktests.cpp",
        "socktests.cpp",
        "storage_debug_util.cpp",
        "threadedtests.cpp",
        "updatetests.cpp",
        "validate_tests.cpp",
        "wildcard_access_method_test.cpp",
        "wildcard_multikey_persistence_test.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/bson/mutable/mutable_bson_test_utils",
        "$BUILD_DIR/mongo/client/clientdriver_network",
        "$BUILD_DIR/mongo/client/replica_set_monitor_protocol_test_util",
        "$BUILD_DIR/mongo/db/auth/authserver",
        "$BUILD_DIR/mongo/db/catalog/catalog_helpers",
        "$BUILD_DIR/mongo/db/catalog/collection_options",
        "$BUILD_DIR/mongo/db/catalog/index_key_validate",
        "$BUILD_DIR/mongo/db/catalog/validate/collection_validation",
        "$BUILD_DIR/mongo/db/collection_crud/collection_crud",
        "$BUILD_DIR/mongo/db/commands/mongod",
        "$BUILD_DIR/mongo/db/commands/test_commands_enabled",
        "$BUILD_DIR/mongo/db/concurrency/deferred_writer",
        "$BUILD_DIR/mongo/db/exec/document_value/document_value_test_util",
        "$BUILD_DIR/mongo/db/index/index_access_method",
        "$BUILD_DIR/mongo/db/index_builds/multi_index_block",
        "$BUILD_DIR/mongo/db/logical_time_metadata_hook",
        "$BUILD_DIR/mongo/db/modules/enterprise/src/inmemory/storage_inmemory"
        if "ldap" in env.get("MONGO_ENTERPRISE_FEATURES", []) and wiredtiger
        else [],
        "$BUILD_DIR/mongo/db/mongohasher",
        "$BUILD_DIR/mongo/db/multitenancy",
        "$BUILD_DIR/mongo/db/op_observer/op_observer",
        "$BUILD_DIR/mongo/db/op_observer/op_observer_impl",
        "$BUILD_DIR/mongo/db/op_observer/operation_logger_impl",
        "$BUILD_DIR/mongo/db/query/bson/dotted_path_support",
        "$BUILD_DIR/mongo/db/query/client_cursor/client_cursor",
        "$BUILD_DIR/mongo/db/query/collation/collator_interface_mock",
        "$BUILD_DIR/mongo/db/query/command_request_response",
        "$BUILD_DIR/mongo/db/query/query_planner_test_lib",
        "$BUILD_DIR/mongo/db/query/query_request",
        "$BUILD_DIR/mongo/db/query/query_settings/manager",
        "$BUILD_DIR/mongo/db/query/write_ops/write_ops",
        "$BUILD_DIR/mongo/db/query_exec",
        "$BUILD_DIR/mongo/db/repl/oplog_entry_test_helpers",
        "$BUILD_DIR/mongo/db/repl/repl_coordinator_interface",
        "$BUILD_DIR/mongo/db/repl/replication_consistency_markers_impl",
        "$BUILD_DIR/mongo/db/repl/replication_recovery",
        "$BUILD_DIR/mongo/db/repl/replmocks",
        "$BUILD_DIR/mongo/db/repl/serveronly_repl",
        "$BUILD_DIR/mongo/db/repl/storage_interface_impl",
        "$BUILD_DIR/mongo/db/server_base",
        "$BUILD_DIR/mongo/db/service_context_d",
        "$BUILD_DIR/mongo/db/session/service_liaison_mongod",
        "$BUILD_DIR/mongo/db/shard_role",
        "$BUILD_DIR/mongo/db/storage/durable_catalog",
        "$BUILD_DIR/mongo/db/storage/storage_engine_impl",
        "$BUILD_DIR/mongo/db/storage/storage_options",
        "$BUILD_DIR/mongo/db/storage/wiredtiger/storage_wiredtiger" if wiredtiger else [],
        "$BUILD_DIR/mongo/db/traffic_reader",
        "$BUILD_DIR/mongo/db/transaction/transaction",
        "$BUILD_DIR/mongo/db/vector_clock",
        "$BUILD_DIR/mongo/db/working_set_common",
        "$BUILD_DIR/mongo/s/sharding_router_api",
        "$BUILD_DIR/mongo/shell/shell_utils",
        "$BUILD_DIR/mongo/transport/message_compressor_options_server",
        "$BUILD_DIR/mongo/transport/session_manager",
        "$BUILD_DIR/mongo/transport/transport_layer_manager",
        "$BUILD_DIR/mongo/util/clock_source_mock",
        "$BUILD_DIR/mongo/util/concurrency/ticketholder",
        "$BUILD_DIR/mongo/util/net/network",
        "$BUILD_DIR/mongo/util/options_parser/options_parser_init",
        "$BUILD_DIR/mongo/util/password",
        "$BUILD_DIR/mongo/util/processinfo",
        "$BUILD_DIR/mongo/util/progress_meter",
        "$BUILD_DIR/mongo/util/signal_handlers",
        "$BUILD_DIR/mongo/util/version_impl",
        "mocklib",
        "testframework",
    ],
    AIB_COMPONENT="dbtest",
    AIB_COMPONENTS_EXTRA=[
        "tests",
    ],
)
